home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 May / EnigmA AMIGA RUN 27 (1998)(G.R. Edizioni)(IT)[!][issue 1998-05].iso / earcd / sinclair-ql / ser_transfer_bas < prev    next >
Text File  |  1998-02-11  |  4KB  |  126 lines

  1. 100 REMark -------------------------------
  2. 110 REMark      File transfer program
  3. 120 REMark  transfer a whole disk between
  4. 130 REMark      two QDOS machines
  5. 140 :
  6. 150 REMark Uses FLEN, FTYP, FDAT, SET_FTYP
  7. 160 REMark      SET_FDAT, INPUT$
  8. 170 REMark -------------------------------
  9. 180 REMark DATA_AREA 1
  10. 190 REMark WHEN ERRor
  11. 200 REMark  PRINT #3\\"Error: "
  12. 210 REMark  REPORT #3,ERNUM
  13. 220 REMark INPUT #3;\" Press ENTER to re-start.";Rplc$
  14. 230 REMark  RETRY
  15. 240 REMark END WHEN
  16. 250 :
  17. 260 DIM Qry$(1)
  18. 270 OPEN#3;"Con_456x234a28x12"
  19. 280 OPEN#4;"Scr_104x12a362x20"
  20. 290 OPEN#5;"Scr_436x142a38x99"
  21. 300 REMark RETRY_HERE
  22. 310 REPeat main_loop
  23. 320  WINDOW#3;456,234,28,12:PAPER#3;0:INK#3;7:CLS#3:BORDER#3;3,2:BORDER#3;2,0:BORDER#3;1,2:WINDOW#3;438,220,36,19:BORDER#5;1,4:INK#5;4:PAPER#5;0
  24. 330  CSIZE#3;2,1:PRINT#3;"SER_TRANSFER V1.02":CSIZE#3;0,0
  25. 340  PRINT#3;"Transfers a complete volume between two QDOS machines via SER";
  26. 350  CLS#4:BORDER#4;1,7:INK#4;4
  27. 360  WINDOW#3;438,40,36,59
  28. 370  REPeat in_loop
  29. 380   INPUT#3;"Direction ('>' send files, '<' receive files ) ?";Qry$
  30. 390   IF Qry$="<" THEN remote_to_local : EXIT in_loop
  31. 400   IF Qry$=">" THEN local_to_remote : EXIT in_loop
  32. 410   IF Qry$="" THEN EXIT main_loop
  33. 420  END REPeat in_loop
  34. 430 END REPeat main_loop
  35. 440 CLOSE#3
  36. 450 CLOSE#4
  37. 460 CLOSE#5
  38. 470 STOP
  39. 480 :
  40. 490 DEFine PROCedure remote_to_local
  41. 500  LOCal sn%,fl,typ,dat
  42. 510  LOCal Name$(64),Dst$(40),cm$(3)
  43. 520  INPUT#3;"Target drive ?",Dst$
  44. 530  INPUT#3;"Serial port number ?",sn%
  45. 540  OPEN#7,"SER"&sn%&"hr"
  46. 550  REPeat loop
  47. 560   INPUT#7,cm$
  48. 570   IF cm$="fin" THEN EXIT loop
  49. 580   IF cm$="dup" THEN 
  50. 590    INPUT#7;fl
  51. 600    INPUT#7;typ
  52. 610    INPUT#7;dat
  53. 620    INPUT#7;Name$
  54. 630    DELETE Dst$&Name$
  55. 640    OPEN_NEW#6;Dst$&Name$
  56. 650    CLS#4
  57. 660    PRINT#5;"receiving :";Name$
  58. 670    h=INT(fl/512):L=fl-512*h
  59. 680    FOR i=1 TO h
  60. 690     PRINT#6;INPUT$(#7,512);
  61. 700     BLOCK#4;INT((i*512/fl)*100),10,0,0,4
  62. 710    END FOR i
  63. 720    IF L<>0 THEN 
  64. 730    PRINT#6;INPUT$(#7,L);
  65. 740    SET_FTYP #6;typ
  66. 750    SET_FDAT #6;dat
  67. 760    CLOSE#6
  68. 770    BLOCK#4;100,10,0,0,4
  69. 780   END IF 
  70. 790  END REPeat loop
  71. 800  CLOSE#7
  72. 810 END DEFine remote_to_local
  73. 820 DEFine PROCedure local_to_remote
  74. 830  LOCal TOTlen,ACClen,sn%,fl,L,typ,dat
  75. 840  LOCal Name$(64),Src$(40),Tmp$(5)
  76. 850  INPUT#3;"source drive ?",Src$
  77. 860  INPUT#3;"Serial port number ?",sn%
  78. 870  Tmp$="ram1_"
  79. 880  PRINT#5;"Setting up -- please Wait."
  80. 890  TOTlen=0
  81. 900  DELETE Tmp$&"TEMP..dir"
  82. 910  OPEN_NEW#6;Tmp$&"TEMP..dir"
  83. 920  DIR#6;Src$
  84. 930  CLOSE#6
  85. 940  OPEN_IN#6;Tmp$&"TEMP..dir"
  86. 950  INPUT#6;Name$,Space$
  87. 960  REPeat loop
  88. 970   IF EOF(#6) THEN EXIT loop
  89. 980   INPUT#6;Name$
  90. 990   IF Name$=="TEMP..dir" THEN NEXT loop
  91. 1000   L=FLEN(\Src$&Name$)
  92. 1010   TOTlen=TOTlen+L
  93. 1020  END REPeat loop
  94. 1030  CLOSE#6
  95. 1040  ACClen=0
  96. 1050  OPEN_IN#6;Tmp$&"TEMP..dir"
  97. 1060  INPUT#6;Name$,Space$
  98. 1070  REPeat loop
  99. 1080   IF EOF(#6) THEN EXIT loop
  100. 1090   INPUT#6;Name$
  101. 1100   IF Name$=="TEMP..dir" THEN NEXT loop
  102. 1110   fl=FLEN(\Src$&Name$)
  103. 1120   PRINT#5;"sending :",Name$
  104. 1130   OPEN#7;"ser"&sn%&"hr"
  105. 1140   PRINT#7;"dup"
  106. 1150   PRINT#7;fl
  107. 1160   PRINT#7;FTYP(\Src$&Name$)
  108. 1170   PRINT#7;FDAT(\Src$&Name$)
  109. 1180   PRINT#7;Name$
  110. 1190   CLOSE#7
  111. 1200   COPY_N Src$ & Name$,"SER"&sn%&"hr"
  112. 1210   ACClen=ACClen+fl
  113. 1220   IF ACClen>TOTlen THEN 
  114. 1230    BLOCK#4;100,10,0,0,4
  115. 1240   ELSE 
  116. 1250    BLOCK#4;INT((ACClen/TOTlen)*100),10,0,0,4
  117. 1260   END IF 
  118. 1270  END REPeat loop
  119. 1280  OPEN#7;"ser"&sn%&"hr"
  120. 1290  PRINT#7;"fin"
  121. 1300  CLOSE#7
  122. 1310  CLOSE#6
  123. 1320  DELETE Tmp$&"TEMP..dir"
  124. 1330 END DEFine local_to_remote
  125. 1340 :
  126.